package com.nhncorp.yammer.util;

/**
 * 날짜 계산
 * 
 * @author KR11783
 */
public interface DatetimeCalculatable {
	/**
	 * 이 날짜 객체의 각 시간값을 증감
	 * 
	 * @param second
	 * @param minute
	 * @param hour
	 * @param day
	 * @param month
	 * @param year
	 * @return
	 */
	Datetime increase(int second, int minute, int hour, int day, int month, int year);

	Datetime increaseSecond(int second);

	Datetime increaseMinute(int minute);

	Datetime increaseHour(int hour);

	Datetime increaseDay(int day);

	Datetime increaseMonth(int month);

	Datetime increaseYear(int year);

	/**
	 * 이 날짜 객체에서 시간값을 증감한 새로운 날짜 객체를 반환
	 * 
	 * @param second
	 * @param minute
	 * @param hour
	 * @param day
	 * @param month
	 * @param year
	 * @return
	 */
	Datetime add(int second, int minute, int hour, int day, int month, int year);

	Datetime addSecond(int second);

	Datetime addMinute(int minute);

	Datetime addHour(int hour);

	Datetime addDay(int day);

	Datetime addMonth(int month);

	Datetime addYear(int year);

	/**
	 * 시분초를 0으로 세팅
	 * 
	 * @return
	 */
	Datetime flatten();

	/**
	 * 두 날짜 중 작은 값
	 * 
	 * @param target
	 * @return
	 */
	Datetime min(Datetime target);

	/**
	 * 두 날짜 중 큰 값
	 * 
	 * @param target
	 * @return
	 */
	Datetime max(Datetime target);

	/**
	 * timestamp 차이를 반환
	 * @param target
	 * @return
	 */
	long getTimeDiff(Datetime target);

	/**
	 * 일 차이를 반환
	 * 
	 * @param target
	 * @return
	 */
	int getDayDiff(Datetime target);
}